﻿using System.Diagnostics;

const int numberOfIterations = 10000000;

//在.NET编程中，使用大量的try-catch块本身不会显著影响性能，除非异常被频繁地抛出和捕获。当异常发生时，堆栈跟踪的生成和异常对象的构建确实会消耗资源，这可能会导致性能问题，特别是在高性能要求的应用程序中。
//在.NET编程中，过度使用try-catch块可能会导致性能下降，但这种影响通常是微不足道的。try-catch本身的开销并不是很大，但如果异常频繁抛出和捕获，那么性能损失可能会变得显著。

Stopwatch sw = Stopwatch.StartNew();
for (int i = 0; i < numberOfIterations; i++)
{
    try
    {
        // 无异常抛出的代码
        var obj = new Random().Next(1, 11);
        if (obj == 7)
        {
            //donothing
        }
    }
    catch (Exception ex)
    {
        // 异常处理代码，但不会执行到这里
    }
}
sw.Stop();
Console.WriteLine("No exception thrown: " + sw.ElapsedMilliseconds + " ms");

sw.Restart();
for (int i = 0; i < numberOfIterations; i++)
{
    // 故意抛出异常的代码
    var obj = new Random().Next(1, 11);
}
sw.Stop();
Console.WriteLine("No TryCatch: " + sw.ElapsedMilliseconds + " ms");

sw.Restart();
for (int i = 0; i < numberOfIterations; i++)
{
    try
    {
        // 故意抛出异常的代码
        var obj = new Random().Next(1, 11);
        if (obj == 7)
        {
            throw new Exception();
        }
    }
    catch (Exception ex)
    {
        // 异常处理代码
    }
}
sw.Stop();
Console.WriteLine("Exception thrown: " + sw.ElapsedMilliseconds + " ms");
